package com.zzy.edu.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zzy.commonutils.R;
import com.zzy.edu.entity.EduCourse;
import com.zzy.edu.entity.vo.course.CourseInfoVo;
import com.zzy.edu.entity.vo.course.CourseQuery;
import com.zzy.edu.entity.vo.publish.CoursePublishVo;
import com.zzy.edu.service.EduCourseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 课程 前端控制器
 * </p>
 *
 * @author KAZU
 * @since 2023-01-13
 */
@SuppressWarnings("all")
@RestController
@RequestMapping("/eduservice/course")
@CrossOrigin
public class EduCourseController {

	@Autowired
	private EduCourseService courseService;
	
	/**
	 * 添加课程基本信息的方法
	 * */
	@PostMapping("addCourseInfo")
	public R addCourseInfo(@RequestBody CourseInfoVo courseInfoVo) {
		String id = courseService.saveCourseInfo(courseInfoVo);
		return R.ok().data("courseId", id);
	}
	
	/**
	 * 根据课程id查询课程基本信息
	 * */
	@GetMapping("getCourseInfo/{courseId}")
	public R getCourseInfo(@PathVariable String courseId) {
//		System.out.println("courseId: " + courseId);
		CourseInfoVo courseInfoVo = courseService.getCourseInfo(courseId);
		
		return R.ok().data("courseInfoVo", courseInfoVo);
	}
	
	/**
	 * 修改课程信息
	 * */
	@PostMapping("updateCourseInfo")
	public R updateCourseInfo(@RequestBody CourseInfoVo courseInfoVo) {
		courseService.updateCourseInfo(courseInfoVo);
		return R.ok();
	}
	
	/**
	 * 根据课程id查询课程确认信息
	 * */
	@GetMapping("getPublishCourseInfo/{courseId}")
	public R getPublishCourseInfo(@PathVariable String courseId) {
		CoursePublishVo coursePublishVo = courseService.publishCourseInfo(courseId);
		return R.ok().data("coursePublishVo", coursePublishVo);
	}
	
	/**
	 * 课程最终发布
	 * 修改课程状态
	 * */
	@PostMapping("publishCourse/{id}")
	public R publishCourse(@PathVariable String id) {
		EduCourse eduCourse = new EduCourse();
		eduCourse.setId(id);
		eduCourse.setStatus("Normal");
		courseService.updateById(eduCourse);
		return R.ok();
	}
	
	/**
	 * 课程列表
	 * */
	@GetMapping
	public R getCourseList() {
		List<EduCourse> list = courseService.list(null);
		return R.ok().data("list", list);
	}
	
	/**
	 * 分页查询课程列表
	 * */
	@PostMapping("getCourseListPage/{current}/{limit}")
	public R getCourseListPage(@PathVariable Long current,
							   @PathVariable Long limit,
							   @RequestBody(required = false) CourseQuery courseQuery) {
		Page<EduCourse> coursePage = new Page<>(current, limit);
		QueryWrapper<EduCourse> wrapper = new QueryWrapper<>();
		String title = courseQuery.getTitle();
		String status = courseQuery.getStatus();
		if (!StringUtils.isEmpty(title)) {
			wrapper.like("title", title);
		}
		if (!StringUtils.isEmpty(status)) {
			wrapper.eq("status", status);
		}
		wrapper.orderByDesc("gmt_create");
		courseService.page(coursePage, wrapper);
		long total = coursePage.getTotal();
		List<EduCourse> records = coursePage.getRecords();
		return R.ok().data("total", total).data("records", records);
	}
	
	/**
	 * 根据课程id逻辑删除课程
	 * */
	@DeleteMapping("{courseId}")
	public R removeCourse(@PathVariable String courseId) {
		courseService.removeCourse(courseId);
		return R.ok();
	}
	
	
	
}

